#include <stdio.h>
#include <stdlib.h>
//函数声明区。

void chaxun();
void changepassword();
void returnwindow();
void panduan();
void zhuanzhang();
void cunkuan();
void getmoney();
void window();
void operfunc(int);
int syspassword=666666;
int mymoney=10000;
double otherscount=0.0;


void checkpassword(){
    int inpassword;
    int times;
    printf("欢迎使用atm机\n");
    printf("请输入您的密码:");
    scanf("%d",&inpassword);
    while(inpassword<100000||inpassword>999999){
        printf("密码错误!请输入六位数密码\n");
        printf("请输入银行卡密码:");
        
        scanf("%d",&inpassword);
    }
    //printf("密码输入正确");
    times++;
    while(inpassword!=syspassword){
        if(times==3){
            printf("密码连续错误三次，你的卡已被冻结。\n");
            exit(0);
        }
        printf("密码已第%d次输入错误，还有%d次机会！\n",times,3-times);
        printf("请输入银行卡密码:");
        scanf("%d",&inpassword);
        times++;
    }
    printf("密码输入正确!\n");
    window();
}
void window(){
    int oper=0;
    printf("欢迎进入atm自动存取款机\n");
    printf("--------------\n");
    printf("1-取款   2-存款\n");
    printf("3-转账   4-改密\n");
    printf("5-查询   6-退卡\n");
    printf("--------------\n");
    printf("请输入操作指令(1-6):");
    scanf("%d",&oper);
    while(oper>6||oper<1){printf("doubi?");
        printf("请输入操作指令(1-6):");
        scanf("%d",&oper);}
    
    operfunc(oper);
}
void operfunc(int op){
    //printf("收到指令");
    switch(op){
        case 1:printf("取款进行中...\n");getmoney();break;
        case 2:printf("存款进行中...\n");cunkuan();break;
        case 3:printf("转账进行中...\n"); zhuanzhang();break;
        case 4:printf("改密进行中...\n");changepassword();break;
        case 5:printf("查询进行中...\n");chaxun();break;
        case 6:printf("欢迎下次使用！\n");break;
    }
}
void getmoney(){
    int pick=0;//取款金额对应的编号。
    int outmoney=0;//取款金额。
    printf("1-100    2-300\n");
    printf("3-500    4-1000\n");
    printf("5-2000   6-其金额\n");
    printf("请选择你的取款金额:\n");
    scanf("%d",&pick);
    switch(pick){
        case 1:outmoney=100;panduan(outmoney);break;
        case 2:outmoney=300;panduan(outmoney);break;
        case 3:outmoney=500;panduan(outmoney);break;
        case 4:outmoney=500;panduan(outmoney);break;
        case 5:outmoney=1000;panduan(outmoney);break;
        case 6:printf("请输入你的取款金额:");
            scanf("%d",&outmoney);
            while(outmoney%100!=0||outmoney==0){
                printf("取款金额有误，请输入整百！\n");
                printf("请输入你的取款金额:");
                scanf("%d",&outmoney);
                
                
            }
            
            ;panduan(outmoney);break;
            
    }
    //    int doubi;
    //    printf("请输入你的取款金额:");
    //    scanf("%d",&doubi);
    //    while(doubi>mymoney){
    //        printf("没钱取个鸡巴？\n");
    //        printf("请重新输入取款的金额:");
    //        scanf("%d",&doubi);
    //    }
    //
    //mymoney=mymoney-outmoney;
    // printf("卡剩🐟额:%d\n",mymoney);
    //returnwindow();
}
void cunkuan(){
    int inputmoney=0;
    printf("请输入你要存款的金额:");
    scanf("%d",&inputmoney);
    while(inputmoney%100!=0||inputmoney==0){
        printf("存款金额有误，请输入整百！\n");
        printf("请输入你的存款金额:");
        scanf("%d",&inputmoney);
    }
    printf("正在验钞......\n");
    printf("你存款金额为:%d元!\n",inputmoney);
    printf("交易正在进行中\n");
    mymoney=mymoney+inputmoney;
    printf("卡剩🐟额%d\n",mymoney);
    returnwindow();
}
void zhuanzhang(){
    int transmoney=0;
    printf("请输入你要转账的金额:\n");
    scanf("%d",&transmoney);
    if(transmoney>mymoney){
        printf("余额不足，转账失败。");
        returnwindow();
    }
    else {
        mymoney=mymoney-transmoney;
        otherscount=otherscount+transmoney;
        printf("转账成功，账户当前余额:%d\n",mymoney);
        returnwindow();
    }
    
}
void panduan(int outmoney){
    if(outmoney>mymoney){
        printf("余额不足，取款失败\n");
        printf("继续取款(输入1)？退卡(输入0)？\n");
        int choice=0;
        scanf("%d",&choice);
        if(choice==1){
            getmoney();
            
        }
        else {
            printf("欢迎下次继续使用\n");
            exit(0);
        }
    }
    else {
        mymoney=mymoney-outmoney;
        printf("卡剩🐟额:%d\n",mymoney);
        returnwindow();
    }
}
void returnwindow(){
    printf("返回主界面(输入1)？退卡(输入0)？\n");
    int choice=0;
    scanf("%d",&choice);
    if(choice==1){
        window();
    }
    else {
        printf("欢迎下次继续使用\n");
        exit(0);
        
    }
}
//修改密码。
void changepassword(){
    int yuanshimima;
    int cishu;
    int xinmima1;
    int xinmima2;
    printf("请输入原始密码:");
    scanf("%d",&yuanshimima);
    
    cishu++;
    while(yuanshimima!=syspassword){
        if(cishu==3){
            printf("密码连续错误三次，你的卡已被冻结。\n");
            exit(0);
        }
        printf("密码已第%d次输入错误，还有%d次机会！\n",cishu,3-cishu);
        printf("请输入银行卡密码:\n");
        scanf("%d",&yuanshimima);
        cishu++;
    }
    printf("密码验证成功,请输入您的新密码:\n");
    scanf("%d",&xinmima1);
    printf("请再次输入您的新密码:\n");
    scanf("%d",&xinmima2);
    
    while(xinmima1!=xinmima2){
        printf("两次密码输入不一致，请重新输入\n");
        scanf("%d",&xinmima1);
        printf("请再次输入您的新密码\n");
        scanf("%d",&xinmima2);
    }
    printf("密码修改成功!\n");
    checkpassword();
}
void chaxun(){
    printf("您当前可用余额为:%d",mymoney);
    returnwindow();
}



int main(){
    checkpassword();
}